Streaming Processes
Overview
Abstract base class for Kafka stream processors that combines consumer and producer functionality. Extends KafkaConsumerBase to enable bidirectional Kafka communication - consuming messages, processing them, and publishing results back to Kafka topics useing composition with KafkaProducerBase.
kafka/cores/kafka_streaming_process_base.py
- Abstract base class for all Kafka stream processors
- Inherits consumer functionality from
KafkaConsumerBase - Uses composition with
KafkaProducerBasefor producer capabilities - Maintains single-threaded architecture with added output publishing
- Processes messages and returns structured results for Kafka publishing
- Single abstract method:
process_message()
Key Components
KafkaStreamingProcessBase Class
- Constructor: Inherits consumer setup, creates composed
KafkaProducerBaseinstance - start(): Initializes consumer, producer, subscribes to topics, and starts processing loop
- consume_messages(): Extended polling loop that processes messages and publishes outputs
- process_message(): Abstract method returning
(success_bool, output_tuples_list) - cleanup(): Cleans up both producer and consumer resources using respective base classes
Processing Flow
- Polls for message batches from subscribed topics
- Calls subclass
process_message()for each message - Handles tuple outputs in format:
(topic, message)or(topic, message, key) - Uses composed
KafkaProducerBaseto send results to destination topics - Includes comprehensive error handling for both processing and publishing steps
KafkaStreamingProcessBase Loop
while self.running:
message_batch = self.consumer.poll(timeout_ms=1000)
for message in messages:
success, outputs = self.process_message(message)
for topic, message_content, key in outputs:
self.producer.send_to_kafka(topic, message_content, key)